package com.ftg.learn.chapter05;

import java.util.Arrays;

/**
 * 练习
 *
 * @author lijiaxin
 * @version 1.0
 * @date 2023/7/11 11:11
 */

public class LearnArray02 {

    public static boolean question01(int x, int[] arr) {
        //a:1  b:[1,2,3,4,5,6,7,8]
        boolean ist = false;
        /**
         * 1:对数组进行循环
         * 2：是否应该取出来的每一个数组，进行比较
         * 3:把结果ist
         */
        for (int i = 0, max = arr.length; i < max; i++) {
            if (arr[i] == x) {
                ist = true;
                break;
            }
        }
        return ist;
    }

    /**
     * 判断arr1是否完全包含在arr2里面
     *
     * @param arr1 子数组
     * @param arr2 目标数组
     * @return 是否存在
     */
    public static boolean question02(int[] arr1, int[] arr2) {
        //a:[1] b:[1,2,3,4,5,6,7,8]
        /**
         * 1:容错处理，判断arr2长度一定大一arr1长度
         * 1.1 初始位置的判断
         * 2:循环
         */
        boolean ist = false;
        if (arr2.length < arr1.length) {
            return false;
        }
        for (int i = 0, max = arr2.length; i < max; i++) {
            if (arr2[i] == arr1[0]) {
                ist = true;
                break;
            }
        }
        return ist;
    }


    public static boolean question03(int[] arr1, int[] arr2) {
        //a:[1,4] b:[1,2,3,4,5,6,7,8]
        if (arr2.length < arr1.length) {
            return false;
        }
        for (int i = 0, max1 = arr2.length; i < max1; i++) {
            int num = 0;
            for (int j = 0; j < arr1.length; j++) {
                //容错
                if (i + j < arr2.length) {
                    //比较
                    if (arr1[j] == arr2[i + j]) {
                        num++;
                    }
                }
            }
            //是否结束
            if (num == arr1.length) {
                return true;
            }
        }
        return false;
    }

    //a:[1,2,3,4] b:[2,3,4,5]左差集 右差集

    public static void question4_1(int[] arr1, int[] arr2) {
//        4.重复上面的操作
        for (int k = 0; k < arr1.length; k++) {
//        1.从数组中拿到一个数
            int temp=arr1[k];
//        2.与从数组里面全部都比较以下
            boolean ist=true;
            for (int i = 0; i < arr2.length; i++) {
                if (arr2[i] == temp) {
                    ist=false;
                    break;
                }
            }
//        3.当所有的都不同就是差数
            if(ist){
                System.out.printf("差数:%d", temp);
            }
        }
    }
    public static void question4_2(int[] arr2, int[] arr1){
        question4_1(arr1,arr2);
    }


    //[1,1,2,3,3,4]每个元素出现的次数，只出现一次的次数

    public static void question05(int[] a) {
//       1.排序
        Arrays.sort(a);
//        2.再输出
        System.out.println(Arrays.toString(a));
//        3.先拿到第一个
        for (int i = 0; i < a.length; i++) {
            int num=0;
            for (int j = i; j < a.length; j++) {
                if(a[i]!=a[j]){
                    num=j;
                    break;
                }
            }
            System.out.printf("%d里有%d个\n",a[i], num == 0 ? a.length - i : num - i);
            i = (num == 0) ? a.length - 1 : num - 1;
        }
    }


    public static void main(String[] args) {
//        int x = 3;
//        int[] arr={3,13,4,6};
//        System.out.println(question01(x, arr));


//        int[] arr1={1,2,3};
//        int[] arr2={1,2,3,1,2,3,4,1,2};
//        System.out.println(question03(arr1,arr2));

//        int[] arr1={1,2,3,4};
//        int[] arr2={2,3,4,5};
//        question4_1(arr1, arr2);
//        question4_1(arr2, arr1);


        int[] a={1,1,5,3,3,4};
        question05(a);

    }
}
